home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0286b / maus256.h < prev    next >
C/C++ Source or Header  |  1992-05-20  |  23KB  |  367 lines

  1. /*/////////////////////////////////////////////////////////////////////////*/
  2. /*                                                                         */
  3. /*       H E A D E R      Z U     D E N     M A U S F U N K T I O N E N    */
  4. /*                                                                         */
  5. /*               Z U R      L I B R A R Y    F Ü R     D E N               */
  6. /*                                                                         */
  7. /*          256 - Farben - VGA - Grafikmodus mit 4 Bildschirmseiten        */
  8. /*                                       */
  9. /*-------------------------------------------------------------------------*/
  10. /*       (C) 1991, Richard KOCH, H.Öschlgasse 19/4/1, A-3430 TULLN         */
  11. /*/////////////////////////////////////////////////////////////////////////*/
  12. /***************************************************************************/
  13. /*-----------------------------------------------------Typen-Definitionen-*/
  14. typedef struct mouse       {
  15.                  int Druck,X,Y;
  16.                };
  17. typedef struct graphcursor {
  18.                  int Mask[2][16];
  19.                  int xspot,yspot;
  20.                };
  21. typedef struct mousesens   {
  22.                  int MickeyHor, MickeyVert, Schwelle;
  23.                };
  24. typedef struct mousebutt   {
  25.                  int ButtStatus, ButtPressRel;
  26.                  int MPosHor, MPosVert;
  27.                };
  28. typedef struct mousemotion {
  29.                  signed int Hor, Vert;
  30.                };
  31. typedef struct aboutmouse  {
  32.                  int Vorkomma, Nachkomma;
  33.                  int MausTyp, PCTyp;
  34.                };
  35. /*------------------------------------------------Konstanten-Definitionen-*/
  36. enum MOUSE_TYPES { PFEIL, PFEILAUF, PFEILLINKS, HAKEN, HAND, FINGER,
  37.            KREUZ, SANDUHR };
  38. #define NO_BL        0,0,0,0
  39. /*-------------------------------------------------Variablen-Definitionen-*/
  40. extern struct graphcursor MouseGrCursor[9];
  41.                /* hält fest, ob eine Maus im System vorhanden ist */
  42. extern        int         MausOK;
  43.            /* die Werte des alten, deinstallierten Event-Handlers */
  44. extern        int         OldMask;
  45. extern        int         OldHandlerSeg, OldHandlerOff;
  46. /**************************************************************************/
  47. /*                         Funktions-Definitionen                         */
  48. /**************************************************************************/
  49. /*========================================================================*/
  50. /*                 Funktion    C H A N G E M C U R S O R                  */
  51. /*------------------------------------------------------------------------*/
  52. /*   Bestimmt das Erscheinungsbild des Mauscursors.                       */
  53. /*   Parameter : die Art des Mauscursors.                                 */
  54. /*                  Folgende Cursorarten stehen zur Auswahl:              */
  55. /*                  0 - NORMAL, 1 - PFEILAUF, 2 - PFEILLINKS, 3 - HAKEN,  */
  56. /*                  4 - HAND, 5 - KREUZ, 6 - SANDUHR                      */
  57. /*               die Randfarbe ,                                          */
  58. /*               die Füllfarbe des Mauscursors.                           */
  59. /*   Bemerkung : -1 als Parameter beläßt die alte Einstellung.            */
  60. /*========================================================================*/
  61.  
  62. void far ChangeMCursor (int CurType, unsigned char Rand, unsigned char Fuell);
  63.  
  64. /*========================================================================*/
  65. /*                  Funktion    C L O S E M O U S E                       */
  66. /*------------------------------------------------------------------------*/
  67. /*   Führt einen generellen Reset der Maus durch.                         */
  68. /*   Parameter: keine.                                                    */
  69. /*   Bemerkung: Zum Aufruf der Funktion muß die Maus vorher aktiv gewesen */
  70. /*              sein.                                                     */
  71. /*              Wird von CLOSE256 aufgerufen.                             */
  72. /*========================================================================*/
  73.  
  74. void far CloseMouse ();
  75.  
  76. /*========================================================================*/
  77. /*                  Funktion    G E T M A C T P A G E                     */
  78. /*------------------------------------------------------------------------*/
  79. /*   Ermittelt die gerade aktive Bildschirmseite für die Maus.            */
  80. /*   Parameter: keine.                                                    */
  81. /*   Rückgabe : die Nummer der Bildschirmseite, im Fehlerfalle -1.        */
  82. /*========================================================================*/
  83.  
  84. int far GetMActPage ();
  85.  
  86. /*========================================================================*/
  87. /*                     Funktion    G E T M B U F F E R                    */
  88. /*------------------------------------------------------------------------*/
  89. /*   Ermittelt die Größe jenes Puffers, der die Mausdaten aufnehmen kann. */
  90. /*   Parameter : keine.                                                   */
  91. /*   Rückgabe  : die Größe des Puffers in Byte oder 0 im Fehlerfalle.     */
  92. /*   Bemerkung : Unterfunktion 15h des Interrupts 33h.                    */
  93. /*========================================================================*/
  94.  
  95. unsigned int far GetMBuffer ();
  96.  
  97. /*========================================================================*/
  98. /*              Funktion    G E T M B U T T O N R E L E A S E             */
  99. /*------------------------------------------------------------------------*/
  100. /*   Gibt Auskunft über den Status der Mausknöpfe, wieoft der ange-       */
  101. /*        sprochene Mausknopf losgelassen wurde und an welcher Position   */
  102. /*        sich die Maus beim Aufruf der Funktion befand.                  */
  103. /*   Parameter : den angesprochenen Mausknopf                             */
  104. /*                eine Variable vom Typ MOUSEBUTT für die anderen Werte.   */
  105. /*        Weitere Informationen siehe SAYMBUTTONSTATUS.                   */
  106. /*   Bemerkung : Unterfunktion 06h des Interrupts 33h.                    */
  107. /*========================================================================*/
  108.  
  109. void far GetMButtonRelease (int WhatButton, struct mousebutt far *MButt);
  110.  
  111. /*========================================================================*/
  112. /*              Funktion    G E T M B U T T O N S T A T U S               */
  113. /*------------------------------------------------------------------------*/
  114. /*   Gibt Auskunft über den Status der Mausknöpfe, wieoft der ange-       */
  115. /*        sprochene Mausknopf betätigt wurde und an welcher Position      */
  116. /*        sich die Maus beim Aufruf der Funktion befand.                  */
  117. /*   Parameter : den angesprochenen Mausknopf (0 - linker, 1 - rechter,   */
  118. /*                                             2 - mittlerer Mausknopf)   */
  119. /*                eine Variable vom Typ MOUSEBUTT für die anderen Werte.   */
  120. /*        ad Status : 1 = linker, 2 = rechter, 3 = linker und rechter,    */
  121. /*                    4 = mittlerer, 5 = linker und mittlerer,            */
  122. /*                    6 = rechter und mittlerer, 7 = alle drei Maus-      */
  123. /*                    knöpfe beim Aufruf der Funktion betätigt.           */
  124. /*   Bemerkung : Unterfunktion 05h des Interrupts 33h.                    */
  125. /*========================================================================*/
  126.  
  127. void far GetMButtonStatus (int WhatButton, struct mousebutt far *MButt);
  128.  
  129. /*========================================================================*/
  130. /*                  Funktion    G E T M M O T I O N                       */
  131. /*------------------------------------------------------------------------*/
  132. /*   Gibt Auskunft über die Bewegungswerte seit dem letzten Aufruf dieser */
  133. /*        Funktion.                                                       */
  134. /*   Parameter : Variable vom Typ MOUSEMOTION für die Aufnahme dieser     */
  135. /*               Werte.                                                   */
  136. /*        ad Werte : horizontal : > 0 = nach rechts, < 0 = nach links.    */
  137. /*                   vertikal   : > 0 = nach unten,  < 0 = nach oben.     */
  138. /*        Um sinnvolle Werte zu liefern muß die Funktion zweimal aufge-   */
  139. /*           rufen werden.                                                */
  140. /*   Bemerkung : Unterfunktion 0Bh des Interrupts 33h.                    */
  141. /*========================================================================*/
  142.  
  143. void far GetMMotion (struct mousemotion far *MMotion);
  144.  
  145. /*========================================================================*/
  146. /*                       Funktion    G E T M P O S                        */
  147. /*------------------------------------------------------------------------*/
  148. /*   Bestimmt die Position des Mauscursors und welcher Mausknopf zuletzt  */
  149. /*      gedrückt wurde.                                                   */
  150. /*   Parameter : Eine Variable vom Strukturtyp MOUSE, die die Werte auf-  */
  151. /*               nehmen kann.                                             */
  152. /*               Druck = 1 : linker,                                      */
  153. /*                     = 2 : rechter,                                     */
  154. /*                     = 4 : mittlerer Mausknopf gedrückt.                */
  155. /*   Bemerkung : Unterfunktion 3 des Interrupts 33h.                      */
  156. /*========================================================================*/
  157.  
  158. void far GetMPos (struct mouse far *Maus);
  159.  
  160. /*========================================================================*/
  161. /*                     Funktion    G E T M S E N S                        */
  162. /*------------------------------------------------------------------------*/
  163. /*   Gibt die Werte für die Maus-Sensitivität zurück, die über die        */
  164. /*        Funktion SETMSENS eingestellt wurden.                           */
  165. /*   Parameter : eine Variable vom Typ MOUSESENS, die die Werte aufnimmt. */
  166. /*   Bemerkung : Unterfunktion 1Bh des Interrupts 33h.                    */
  167. /*========================================================================*/
  168.  
  169. void far GetMSens (struct mousesens far *MSens);
  170.  
  171. /*========================================================================*/
  172. /*                    Funktion    G E T M S T A T                         */
  173. /*------------------------------------------------------------------------*/
  174. /*   Gibt Auskunft über die Versionsnummer des Maustreibers und die Art   */
  175. /*        der Maus.                                                       */
  176. /*   Parameter : Variable vom Typ ABOUTMOUSE für die Werte.               */
  177. /*   Rückgaben : Vorkommateil der Versionsnummer                          */
  178. /*               Nachkommateil der Versionsnummer                         */
  179. /*               Maustyp : 1 - Bus-Maus, 2 - serielle Maus,               */
  180. /*                         3 - InPort-Maus, 4 - PS/2-Maus, 5 - HP-Maus.   */
  181. /*               PC-Typ (Interrupttyp) : 0 - PS/2                         */
  182. /*                                       2,3,4,5,7 - PC                   */
  183. /*   Bemerkung : Unterfunktion 24h des Interrupts 33h.                    */
  184. /*========================================================================*/
  185.  
  186. void far GetMStat (struct aboutmouse far *AboutM);
  187.  
  188. /*========================================================================*/
  189. /*                     Funktion    H I D E M C U R S O R                  */
  190. /*------------------------------------------------------------------------*/
  191. /*   Entfernt den Mauscursor vom Bildschirm.                              */
  192. /*   Parameter : keine.                                                   */
  193. /*   Bemerkung : Diese Funktion ersetzt die Unterfunktion 2 des Inter-    */
  194. /*                 rupts 33h.                                             */
  195. /*========================================================================*/
  196.  
  197. void far HideMCursor ();
  198.  
  199. /*========================================================================*/
  200. /*                     Funktion    I N I T M O U S E                      */
  201. /*------------------------------------------------------------------------*/
  202. /*   Initialisiert den Maustreiber, versteckt die Maus, setzt sie         */
  203. /*     (unsichtbar) in die Mitte des Bildschirmes und installiert einen   */
  204. /*     Eventhandler, der die Mausbewegungen steuert.                      */
  205. /*   Parameter : 0 oder 1, ob abgebrochen werden soll, wenn kein Maus-    */
  206. /*                  treiber gefunden wurde.                               */
  207. /*   Bemerkung : Unterfunktion 0 des Interrupts 33h.                      */
  208. /*========================================================================*/
  209.  
  210. void far InitMouse (int Exit);
  211.  
  212. /*========================================================================*/
  213. /*                     Funktion    I N S T H A N D L E R                  */
  214. /*------------------------------------------------------------------------*/
  215. /*   Installiert einen Event-Handler, der die Maus bei bestimmten Maus-   */
  216. /*               aktionen anders reagieren läßt als dies normalerweise    */
  217. /*               der Fall ist.                                            */
  218. /*   Parameter : eine Bitmaske, die den Event für das Aufrufen der alter- */
  219. /*                  nativen Funktion bestimmt (siehe Maus-Interrupt).     */
  220. /*               Zeiger auf eine Funktion, die die standardmäßige ersetzt.*/
  221. /*   Bemerkung : Unterfunktion 0Ch des Interrupts 33h.                    */
  222. /*               Die Funktion legt die Werte des deinstallierten Handlers */
  223. /*                  in den Variablen OLDMASK, OLDHANDLERSEG und OLD-      */
  224. /*                  HANDLEROFF ab.                                        */
  225. /*========================================================================*/
  226.  
  227. void far InstHandler (int Event, void far *Func);
  228.  
  229. /*========================================================================*/
  230. /*  Funktionen  M O U S E I N X ,  M O U S E I N X Y , M O U S E I N Y    */
  231. /*------------------------------------------------------------------------*/
  232. /*   Überprüft, ob sich die Maus in einer Zeile (MOUSEINY), Spalte        */
  233. /*      (MOUSEINX) oder in einem rechteckigen Bereich (MOUSEINXY)         */
  234. /*      befindet und ob gleichzeitig ein Mausknopf gedrückt wurde.        */
  235. /*   Parameter : der Name der Maus-Variablen,                             */
  236. /*               gedrückter Mausknopf (1,2,3),                            */
  237. /*               linke X-Koordinate (MOUSEINX, MOUSEINXY),                */
  238. /*               rechte X-Koordinate (MOUSEINX, MOUSEINXY),               */
  239. /*               obere Y-Koordinate (MOUSEINXY, MOUSEINY),                */
  240. /*               untere Y-Koordinate (MOUSEINXY, MOUSEINY).               */
  241. /*   Rückgabe :  1 - Druck OK, Maus im Bereich                            */
  242. /*               0 - nicht gedrückt, oder Maus nicht im Bereich           */
  243. /*========================================================================*/
  244.  
  245. int far MouseInX (struct mouse *mvar, int Button, int X1, int X2);
  246. int far MouseInXY (struct mouse *mvar,
  247.            int Druck, int X1, int X2, int Y1, int Y2);
  248. int far MouseInY (struct mouse *mvar, int Button, int Y1, int Y2);
  249.  
  250. /*========================================================================*/
  251. /*                     Funktion    M B L A C K O U T                      */
  252. /*------------------------------------------------------------------------*/
  253. /*   Definiert einen Ausschlußbereich, in dem die Maus nicht sichtbar ist.*/
  254. /*   Parameter : die Koordinaten des Bereichs (X1,Y1,X2,Y2).              */
  255. /*               NO_BL als Parameter schaltet diese Funktion aus.         */
  256. /*   Bemerkung : Diese Funktion ersetzt die Unterfunktion 10h des Inter-  */
  257. /*                 rupts 33h.                                             */
  258. /*               Funktioniert nicht, wenn die Maus sichtbar ist!          */
  259. /*========================================================================*/
  260.  
  261. void far MBlackOut (int X1, int Y1, int X2, int Y2);
  262.  
  263. /*========================================================================*/
  264. /*                    Funktion    M A K E M C U R S O R                   */
  265. /*------------------------------------------------------------------------*/
  266. /*   Initialisiert den Mauscursor, bestimmt die Bildschirmseite, auf der  */
  267. /*      er sich bewegt, und sein Erscheinungsbild.                        */
  268. /*   Parameter : die Seitennummer (0 - 3)                                 */
  269. /*               die neue X-Koordinate, wenn nicht -1                     */
  270. /*               die neue Y-Koordinate, wenn nicht -1                     */
  271. /*               die neue Randfarbe des Cursors, wenn nicht -1            */
  272. /*               die neue Füllfarbe des Cursors, wenn nicht -1            */
  273. /*               die neue Cursor-Figur, wenn nicht gewünscht -1.          */
  274. /*   Bemerkung : Diese Funktion ersetzt die Unterfunktion 1Dh des Inter-  */
  275. /*                 rupts 33h (teilweise).                                 */
  276. /*========================================================================*/
  277.  
  278. void far MakeMCursor (int PageNr, int X, int Y, int RF, int FF, int Shape);
  279.  
  280. /*========================================================================*/
  281. /*                 Funktion    P U T M O U S E A T                        */
  282. /*------------------------------------------------------------------------*/
  283. /*   Setzt den Mauscursor an eine bestimmt Bildschirmposition.            */
  284. /*   Parameter : die X-Koordinate (0 - 319)                               */
  285. /*               die Y-Koordinate (0 - 199)                               */
  286. /*               die neue Cursorfigur, ansonsten -1.                      */
  287. /*               die neue Randfarbe, ansonsten -1.                        */
  288. /*               die neue Füllfarbe, ansonsten -1.                        */
  289. /*   Bemerkung : Unterfunktion 4 des Interrupts 33h.                      */
  290. /*========================================================================*/
  291.  
  292. void far PutMouseAt (int X, int Y, int RF, int FF, int Shape);
  293.  
  294. /*========================================================================*/
  295. /*                     Funktion    R E S T O R E M O U S E                */
  296. /*------------------------------------------------------------------------*/
  297. /*   Sichert alle Mausdaten in einem Puffer und diversen Variablen.       */
  298. /*   Parameter : keine.                                                   */
  299. /*========================================================================*/
  300.  
  301. void far RestoreMouse ();
  302.  
  303. /*========================================================================*/
  304. /*                     Funktion    S A V E M O U S E                      */
  305. /*------------------------------------------------------------------------*/
  306. /*   Sichert alle Mausdaten in einem Puffer und diversen Variablen.       */
  307. /*   Parameter : keine.                                                   */
  308. /*========================================================================*/
  309.  
  310. void far SaveMouse ();
  311.  
  312. /*========================================================================*/
  313. /*                     Funktion    S E T M S E N S                        */
  314. /*------------------------------------------------------------------------*/
  315. /*   Legt die Geschwindigkeit fest, nach deren Erreichen sich die Maus-   */
  316. /*        geschwindigkeit verdoppelt; weiters wird die Anzahl von Mickeys */
  317. /*        (8 Punkte) festgelegt, die bei einer Mausbewegung zurückgelegt  */
  318. /*        werden.                                                         */
  319. /*   Parameter : den Horizontalwert für die Geschwindigkeit (1 - 32767)   */
  320. /*               den Vertikalwert für die Geschwindigkeit (1 - 32767)     */
  321. /*                die Geschwindigkeit in Mickeys pro Sekunde.              */
  322. /*        Wird 0 (Null) beim dritten Parameter angegeben, so wird wieder  */
  323. /*               der Defaultwert von 64 Mickeys pro Sekunde eingestellt.  */
  324. /*        Je größer die Werte der ersten beiden Parameter, desto          */
  325. /*               langsamer bewegt sich die Maus.                          */
  326. /*   Bemerkung : Unterfunktion 1Ah des Interrupts 33h.                    */
  327. /*========================================================================*/
  328.  
  329. void far SetMSens (int MickeyHor, int MickeyVert, int MickeysProSec);
  330.  
  331. /*========================================================================*/
  332. /*                 Funktion    S E T X Y R A N G E                        */
  333. /*------------------------------------------------------------------------*/
  334. /*   Legt den horizontalen und vertikalen Bewegungsbereich der Maus fest. */
  335. /*   Parameter : linker X-Wert (0 - 319)                                  */
  336. /*               rechter X-Wert (0 - 319)                                 */
  337. /*               oberer Y-Wert (0 - 199)                                  */
  338. /*               unterer Y-Wert (0 - 199)                                 */
  339. /*   Bemerkung : Unterfunktion 07h und 08h des Interrupts 33h.            */
  340. /*========================================================================*/
  341.  
  342. void far SetXYRange (int XMin, int XMax, int YMin, int YMax);
  343.  
  344. /*========================================================================*/
  345. /*                     Funktion    S H O W M C U R S O R                  */
  346. /*------------------------------------------------------------------------*/
  347. /*   Bringt den Mauscursor auf den Bildschirm.                            */
  348. /*   Parameter : keine.                                                   */
  349. /*   Bemerkung : Diese Funktion ersetzt die Unterfunktion 1 des Inter-    */
  350. /*                 rupts 33h.                                             */
  351. /*               Dem Aufruf von SHOWMCURSOR muß ein Aufruf von            */
  352. /*                 MAKEMCURSOR vorangegangen sein!                        */
  353. /*========================================================================*/
  354.  
  355. void far ShowMCursor ();
  356.  
  357. /*========================================================================*/
  358. /*                     Funktion    T U R N M O U S E                      */
  359. /*------------------------------------------------------------------------*/
  360. /*   Schaltet den Maustreiber OFF oder ON, je nach Parameter.             */
  361. /*   Parameter : 0 - OFF, oder 1 - ON.                                    */
  362. /*   Bemerkung : Unterfunktion 1Fh und 20h des Interrupts 33h.            */
  363. /*========================================================================*/
  364.  
  365. void far TurnMouse (int Mode);
  366.  
  367. /*========================================================================*/